package com.can.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.can.common.exception.ServiceException;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * @Desription 通用基础service类
 * @Author can
 * @Date 2018/10/19
 * @Version 1.0
 */
public interface IBaseService<T> {

    /**
     * 插入一条记录
     *
     * @param entity 实体对象
     * @result 数据库自增id
     */
    public Integer save(T entity) throws ServiceException;

    /**
     * 根据id更新一条记录
     * @param entity
     * @return
     */
    public Boolean updateById(T entity) throws ServiceException;

    /**
     * 根据id查询一条记录
     * @param id
     * @return
     */
    public T selectById(Serializable id) throws ServiceException;

    /**
     * 根据条件查询所有记录
     * @param entity
     * @return
     */
    public List<T> selectList(T entity) throws ServiceException;
    /**
     * 根据 entity 条件，查询全部记录（并翻页）
     *
     * @param page 分页查询条件
     * @param wrapper   实体对象封装操作类（可以为 null）
     * @return Collection<T>
     */

    public Page<T> selectPage(Page<T> page, Wrapper<T> wrapper) throws ServiceException;
    /**
     * 批量删除记录
     * @param idList list集合
     * @return
     */
    public Boolean deleteBatchIds(Collection<? extends Serializable> idList) throws ServiceException;

    /**
     * 根据id删除一条记录
     * @param id
     * @return
     */
    public Boolean deleteById(Serializable id) throws ServiceException;
}
